import Vue from 'vue'
import Vuex from 'vuex'
import createLogger from 'vuex/dist/logger'
import getters from './getters.js'
import * as types from './mutation-type.js'

Vue.use(Vuex)

const state = {
    systemInfo: {
        platform: 'android',
        isIpx: false,
        barHeight: 0,
        statusBarHeight: 0
    }
}

const mutations = {
    [types.SYSTEMINFO](state, info) {
        state.systemInfo = info
    }
}

const actions = {
    
}

const logger = createLogger({
    collapsed: false, // 自动展开记录的 mutation
    filter(mutation, stateBefore, stateAfter) {
        // 若 mutation 需要被记录，就让它返回 true 即可
        // 顺便，`mutation` 是个 { type, payload } 对象
        return mutation;
    },
    transformer(state) {
        // 在开始记录之前转换状态
        // 例如，只返回指定的子树
        return state;
    },
    mutationTransformer(mutation) {
        // mutation 按照 { type, payload } 格式记录
        // 我们可以按任意方式格式化
        return mutation.payload;
    },
    logger: console, // 自定义 console 实现，默认为 `console`
})

const store = new Vuex.Store({
    actions,
    getters,
    mutations,
    state,
    modules: {

    },
    plugins: process.env.NODE_ENV !== 'production'
        ? [logger]
        : []

})

export default store;